package com.fangcun.service.api;

import java.util.List;

import com.fangcun.bean.api.order.request.GoodsCreateOrderRequest;
import com.fangcun.bean.api.order.request.OrderApplyRefundRequest;
import com.fangcun.bean.api.order.request.OrderDetailRequest;
import com.fangcun.bean.api.order.request.OrderListRequest;
import com.fangcun.bean.api.order.request.OrderRevokeRefundRequest;
import com.fangcun.bean.api.order.request.ShopCartCreateOrderRequest;
import com.fangcun.bean.api.order.response.OrderCreateResponse;
import com.fangcun.bean.api.order.response.OrderDetailResponse;
import com.fangcun.bean.api.order.response.OrderListResponse;
import com.fangcun.bean.api.order.response.OrderStatusNumberResponse;
import com.fangcun.bean.sys.PageBean;
import com.fangcun.bean.sys.pay.PayResultMsg;
import com.fangcun.common.exception.ProAffairException;
import com.github.pagehelper.PageInfo;

/**
 * @作者： 陳曉鬆 @时间： 2020年7月16日 - 上午11:42:08 @description：->
 */
public interface OrderApiService {
	
	/**
	 * @作者：陳曉鬆 @时间：2020年5月4日 上午10:17:48 @版本：V1.0 @description：-> 购物车订单生成
	 */
	public OrderCreateResponse shopCartCreateOrder(ShopCartCreateOrderRequest request) throws ProAffairException;
	/**
	 * @作者：陳曉鬆 @时间：2020年7月16日 下午2:10:02 @版本：V1.0 @description：-> 创建订单
	 */
	public OrderCreateResponse createOrderByGoods(GoodsCreateOrderRequest request) throws ProAffairException;

	/**
	 * @作者：陳曉鬆 @时间：2020年7月16日 下午2:10:02 @版本：V1.0 @description：-> 创建订单
	 */
	public OrderCreateResponse createOrderByGoodsForLQH(GoodsCreateOrderRequest request) throws ProAffairException;

	/**
	 * @作者：陳曉鬆 @时间：2020年7月16日 下午5:19:46 @版本：V1.0 @description：-> 查询订单列表
	 */
	public PageInfo<OrderListResponse> list(PageBean<OrderListRequest> request) throws ProAffairException;

	/**
	 * @作者：陳曉鬆 @时间：2020年7月17日 上午10:04:58 @版本：V1.0 @description：-> 订单详情
	 */
	public OrderDetailResponse detail(OrderDetailRequest request) throws ProAffairException;

	/**
	 * @作者：陳曉鬆 @时间：2020年5月5日 上午11:37:08 @版本：V1.0 @description：-> 过期订单取消
	 */
	public void invalidOrderCancel();

	/**
	 * @作者：陳曉鬆 @时间：2020年7月17日 下午4:51:45 @版本：V1.0 @description：-> 确认收货
	 */
	public void confirmReceivingGoods(Long orderId, Long userId) throws ProAffairException;

	/**
	 * @作者：陳曉鬆 @时间：2020年7月17日 下午6:49:05 @版本：V1.0 @description：-> 修改订单为删除
	 */
	public void updateOrderByIsdelete(List<Long> orderIds) throws ProAffairException;

	/**
	 * @作者：陳曉鬆 @时间：2020年7月17日 下午6:49:33 @版本：V1.0 @description：-> 获取用户订单每个状态的数量
	 */
	public List<OrderStatusNumberResponse> getOrderStatusNumber(Long userId) throws ProAffairException;

	/**
	 * @作者：陳曉鬆 @时间：2020年7月17日 下午7:00:02 @版本：V1.0 @description：-> 申请退款
	 */
	public OrderDetailResponse applyRefund(OrderApplyRefundRequest request) throws ProAffairException;

	/**
	 * @作者：陳曉鬆 @时间：2020年7月17日 下午7:38:43 @版本：V1.0 @description：-> 撤销退款
	 */
	public void revokeRefund(OrderRevokeRefundRequest request) throws ProAffairException;

	/**
	 * @作者：陳曉鬆 @时间：2020年5月4日 下午4:20:14 @版本：V1.0 @description：-> 生成支付需要的数据
	 */
	public Object pay(String orderNumber, Long userId, Integer payType, Integer source) throws ProAffairException;

	/**
	 * @作者：陳曉鬆 @时间：2020年5月5日 上午10:03:51 @版本：V1.0 @description：-> 处理支付的回调
	 */
	public void dealPayNotify(PayResultMsg payResultMsg) throws ProAffairException;

}
